package com.songsong.myblog2.service;

import com.songsong.myblog2.domain.Article;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;


public interface ArticleService {
    /**
     * 新增文章的service
     */
    public void addArticle(Article article);

    /*
     * 分页查询文章
     * */
    public JSONArray findAllArticles(String rows, String pageNo);

    /**
     * 根据id获取文章
     *
     * @param id
     * @return
     */
    public Article findArticleById(long id);

    /**
     * 获取文章总数
     *
     * @return
     */
    public int getArticleNum();

    /**
     * 获取最新的五篇文章
     *
     * @param rows
     * @param pageNum
     * @return
     */
    public JSONObject findFiveNewArticle(int rows, int pageNum);

    /**
     * 获取最热的五篇文章
     *
     * @param rows
     * @param pageNum
     * @return
     */
    public JSONObject findFiveHotArticle(int rows, int pageNum);

    /*更改文章热度*/
    public void updateArticleHot(int id);

    /**
     * 分页获得该归档日期下的所有文章
     *
     * @param archive 归档日期
     * @param rows    一页大小
     * @param pageNum 页数
     * @return
     */
    public JSONObject findArticleByArchive(String archive, int rows, int pageNum);

    /**
     * 根据标签获取文章
     *
     * @param rows
     * @param pageNum
     * @param tagName
     * @return
     */
    public JSONArray findArticlesByTag(String rows, String pageNum, String tagName);

    /**
     * 根据用户分页查询用户文章到用户页
     *
     * @param username
     * @param rows
     * @param pageNum
     * @return
     */
    public JSONArray findArticlesByUser(String username, String rows, String pageNum);

    /**
     * 分页获得文章管理
     *
     * @param rows
     * @param pageNum
     * @return
     */
    JSONObject getArticleManagement(String username, int rows, int pageNum);

    /**
     * 获得草稿中的文章
     *
     * @return
     */
    JSONObject getDraftArticle(Article article, String[] articleTags);

    /**
     * 修改文章
     *
     * @return
     */
    JSONObject updateArticleById(Article article);

    /**
     * 通过id删除文章
     *
     * @param id 文章id
     * @return 1--删除成功  0--删除失败
     */
    int deleteArticle(long id);

    JSONObject getArticleManagementAdmin(int parseInt, int parseInt1);

    JSONObject findArticleByCategory(String category, int rows, int pageNum);

    JSONArray findArticlesBySearch(String keyboard, String rows, String pageNum);
}
